package com.mystudy.leetcode.problem.tree.p_108;

import com.mystudy.leetcode.base.TreeNode;

/**
 * @author 周志龙
 * @Email 15216876513@163.com
 * @Date on 2019/7/23 22:40
 * @Description 将有序数组转换为二叉搜索树
 */
public class Solution {
    /**
     * 我们想要得到的是一颗平衡二叉树，所以仅仅是取一次数组的中点是不够的，
     * 而是通过递归不断的获取断开的数组的中点，这样，每一层都是一颗平衡二叉树，最终的结果自然也是一颗平衡二叉树．
     * @param nums
     * @return
     */
    public TreeNode sortedArrayToBST(int[] nums) {
        if(nums.length ==0){
            return null;
        }
        return sorted(nums,0,nums.length);
    }

    private TreeNode sorted(int[] nums,int start,int end){
        if(start == end){
            return null;
        }
        int mid = (start+end)/2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = sorted(nums,start,mid);
        root.right = sorted(nums,mid+1,end);
        return root;

    }



}
